import router from './index.ts';
import useUserStore from '@/stores/modules/user.ts';
import pinia from '@/stores/index.ts';
const userStore = useUserStore(pinia)


//用户未登录:可以访问login,其余六个路由不能访问(指向login)
//用户登录成功:不可以访问login[指向首页],其余的路由可以访问
router.beforeEach(async (to, _form, next) => {
  // 有 token 说明登录成功
  if(localStorage.getItem('TOKEN')){
    // 已经登录，不想退出直接通过 url 访问登录页面时
    if(to.path === '/login'){
      next({path: '/'})
    }else{
      // 有用户名，直通车
      if(userStore.userName){
        next()
      }else{
        // pinia 非持久化， 当用户刷新时数据丢失， 所以当用户没数据时再次发送请求
        try {
          await userStore.userInfo()
          // 有异步路由的时候
          next({...to})
        } catch (error) {
          //token过期:获取不到用户信息了
          //用户手动修改本地存储token
          //退出登录->用户相关的数据清空
          await userStore.loginOut()
          next({ path: '/login', query: { redirect: to.path } })
        }
      }
    }
  }
  // token 过期时， 无 token 未登录时
  else{
    if(to.path === '/login'){
      next()
    }else{
      next({path: '/login', query: {redirect: to.path}})
    }
  }
})